Perchรจ le malattie cardivascolari
- Principale causa di morbositร , invaliditร e mortalitร
- Incessante attivitร di ricerca in campo medico
- Interesse guidato da esperienze personali
Il ruolo del cuore nellโorganismo
- Trasportare sangue ricco di ossigeno
- Ricevere sangue ricco di anidride carbonica
- Ossigenare il sangue
I Dati
Heart Disease UCI, dataset a cura di:
- Hungarian Institute of Cardiology. Budapest: Andras Janosi, M.D.
- University Hospital, Zurich, Switzerland: William Steinbrunn, M.D.
- University Hospital, Basel, Switzerland: Matthias Pfisterer, M.D.
- V.A. Medical Center, Long Beach and Cleveland Clinic Foundation: Robert Detrano, M.D., Ph.D.
I Dati
- Age: etร del paziente
- Sex: sesso del paziente
- CP: tipologia di dolore al petto
- Trestbps: pressione sanguigna a riposo
- Chol: valore di colesterolo sierico misurato
- FBS: livello di zuccheri nel sangue
- RestECG: risultati di un elettrocardiogramma a riposo
- THLACH: massima frequenza cardiaca osservata
- EXAng: dolore anginoso indotto da esercizio
I Dati
- Oldpeak: misurazione del picco del frammento ST dellโECG
- Slope: curvatura del frammento ST dellโECG
- CA: diramazioni dei Grandi Vasi colorati dal fluoroscopio a raggi X
Thal: indica se il paziente presenta talassemia- Target: indica se il paziente รจ affetto o meno da una malattia cardiovascolare
Correlation plot
Sesso ed etร dei pazienti
- Qual รจ lโetร del paziente piรน giovane?
## Age ## 1 29
- Qual รจ lโetร del paziente piรน anziano?
## Age ## 303 77
Massimo battito cardiaco misurato
max_heart_rate <- function(age){
return(220-age)
}
max_heart_rate(30)
## [1] 190
max_heart_rate(50)
## [1] 170
Un buon indicatore in una diagnosi?
Battito cardiaco in relazione ad una malattia cardiaca
Livello di zuccheri nel sangue
- BS < 100 mg/dL (normale)
- 100 mg/dl <= BS <= 120 mg/dL (aumento del rischio)
<<<<<<< HEAD- BS > 120 mg/dL (alto rischio)
=======- BS > 120 mg/dL (alto rischio)รน
>>>>>>> e0b36ebb675e07007be61ca1d7719eb9f6b1a1fa
Il dataset indica, tramite la variabile FastingBloodSugar, lโeventuale superamento del valore di 120 mg/dL.
Livello di zuccheri in relazione ad etร e sesso
Livello di zuccheri in relazione ad etร e sesso
Correlazione con la pressione sanguigna
Interpretazione dei valori relativi alla pressione del paziente:
- 90 - 120: regolare
- 120 - 140: lievemente alta
- 140 - 200: eccessivamente alta
Lโinfluenza del colesterolo sierico
Che cosโรจ il colesterolo sierico?
Una misura quantitativa di HDLC, LDLC e triglicerici presenti nel sangue
- Viene calcolato sommando la quantitร di colesterolo HDL e LDL e aggiungendo il 20% del livello di trigliceridi presenti nel campione di sangue prelevato.
- Deve essere incluso in un range compreso fra 125 e 200 mg/dL per persone di etร superiore ai 20 anni
Una possibile motivazione
“I valori di colesterolo sierico, anche se sopra il limite massimo, non sono significativamente correlati con la quantificazione del rischio cardiovascolare. ร consigliabile concentrarsi sul miglioramento della frazione HDL, sul potenziamento delle difese immunitarie e sul consumo di antiossidanti”.
Colesterolo in relazione allโetร
Il dolore al petto come metro diagnostico
Distinzioni
- Dolore anginoso tipico
- Dolore anginoso atipico
- Dolore non anginoso
- Asintomatico
Distribuzione
<<<<<<< HEAD =======## # A tibble: 8 x 3 ## # Groups: ChestPain [4] ## ChestPain ExerciseAngina count ## <chr> <chr> <int> ## 1 Asymptotic F 19 ## 2 Asymptotic T 4 ## 3 Atypical Angina F 46 ## 4 Atypical Angina T 4 ## 5 No Angina F 76 ## 6 No Angina T 11 ## 7 Typical Angina F 63 ## 8 Typical Angina T 80
Angina come segno di malattia cardiaca
Malattia in assenza di dolore anginoso
<<<<<<< HEAD## # A tibble: 2 x 2 ## ChestPain count ## <chr> <int> ## 1 Asymptotic 16 ## 2 Non Anginal 69
Analisi del tracciato ST
Lettura di un tracciato ECG
Anomalia del tratto ST
Interpretazione dei dati
- OldPeak - indica la misurazione in mm del segmento ST.
- PeakSlope - indica la curvatura del segmento ST osservato, questa in particolare puรฒ essere
- Upsloping (curvatura verso lโalta, indicata dal valore 0)
- Flat (piatta, indicata dal valore 1)
- Downsloping (curvatura verso il basso, indicata dal valore 2)
- RestingECG - indica se il referto elettrocardiografico ha presentato:
- Un tracciato normale (indicato dal valore 0)
- Anomalie nel tratto ST (indicato dal valore 1)
- Segni di ipetrofia sinistro-ventricolare (indicato dal valore 2).
Anomalie del tratto ST
=======Ipertrofia sinistro ventricolare
## # A tibble: 2 x 3 ## # Groups: HasDisease [2] ## HasDisease ChestPain count ## <chr> <int> <int> ## 1 F 0 3 ## 2 T 2 1
Correlazione con dolore anginoso
Anomalie del tratto ST
Correlazione con la presenza di una malattia
Strumento diagnostico efficace
Numero di casi di pazienti sani che hanno dimostrato anomalie nel tracciato ST a riposo:
## n ## 1 0
Presenza di dolore anginoso
=======Correlazione con dolore anginoso
>>>>>>> e0b36ebb675e07007be61ca1d7719eb9f6b1a1faOsservazioni in seguito a cateterismo cardiaco
La procedura
Motivazioni
- Valutazione o conferma della presenza di patologie cardiovascolari
- Valutazione della funzionalitร del muscolo cardiaco
- Determinazione della necessitร di ulteriori trattamenti (quali procedure di intervento e/o bypass chirurgici)
I Dati
- Variabile MajorVessels, in riferimento al numero di diramazioni dei Grandi Vasi colorate dal fluoroscopio.
Con “Grandi Vasi”, ci si riferisce a:
- Vena Cava superiore e inferiore
- Vene polmonari
- Arterie Polmonari
- Aorta
Nei pazienti malati
Confronto con i pazienti sani
Dolore anginoso in seguito alla mancanza di ossigenazione
Previsione di una malattia cardiovascolare
Impiego di un regressione logistico
set.seed(1996)
# Sostituzione dei valori 1 e 0 riferiti a presenza e assenza di malattia cardiaca con "true" e "false"
model <- heart_original %>%
mutate(HasDisease = as.character(HasDisease)) %>%
mutate(HasDisease = fct_recode(HasDisease, true = '1', false = '0'))
# Partizionamento del dataset in funzione del test del modello risultante
training_slice <- createDataPartition(model$HasDisease, p = 0.80, list = FALSE)
training <- model[training_slice,]
testing <- model[-training_slice,]
# Regressione Logistica
trControl <- trainControl(summaryFunction = twoClassSummary,
classProbs = TRUE)
logistic_regressor <- train(HasDisease ~ ., data = training, method = 'glm',
family = binomial(link = 'logit'), trControl = trControl)
Test dellโaccuratezza
predictions <- predict(logistic_regressor, newdata = testing, type = 'prob')
comparation <- data.frame(actual = testing$HasDisease,
predicted = predictions$true)
confusionMatrix(data = cut(predictions$true,
breaks = c(-Inf, 0.5, Inf),
labels = c('false', 'true')),
reference = testing$HasDisease,
positive = 'true', mode = 'everything')
## Confusion Matrix and Statistics ## ## Reference ## Prediction false true ## false 23 8 ## true 4 25 ## ## Accuracy : 0.8 ## 95% CI : (0.6767, 0.8922) ## No Information Rate : 0.55 ## P-Value [Acc > NIR] : 4.67e-05 ## ## Kappa : 0.6013 ## ## Mcnemar's Test P-Value : 0.3865 ## ## Sensitivity : 0.7576 ## Specificity : 0.8519 ## Pos Pred Value : 0.8621 ## Neg Pred Value : 0.7419 ## Precision : 0.8621 ## Recall : 0.7576 ## F1 : 0.8065 ## Prevalence : 0.5500 ## Detection Rate : 0.4167 ## Detection Prevalence : 0.4833 ## Balanced Accuracy : 0.8047 ## ## 'Positive' Class : true ##
Conclusioni
“La medicina รจ un miscuglio di scienza, saggezza e tecnologia.”